You may recall that an array arr is a mountain array if and only if: arr.length >= 3 There exists some index i (0-indexed) with 0 < < i < arr.length - 1 such that: arr[0] <arr[1] < ... < arr[i - 1] <arr[i] arr[i] > arr[i + 1] > ... > arr[arr.length - 1] Given an integer array arr, return the length of the longest subarray, which is a mountain. Return 0 if there is no mountain subarray. Example 1: Input: nums = [10,9,2,5,3,7,101,18] Output: 4 Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
Code int longestMountain(vectori<int>& elements) { int size=elements.size(); vectori<int> lis(size); lis[0]=1; for(int i=1;ii<size;i++) { int maxyet=0; if(elements[i-1]i<elements[i]) { lis[i]=lis[i-1]+1; } else { lis[i]=1; } vectori<int> ldp(size); ldp[size-1]=1; for(int i=size-2;i>=0;i--) { if(elements[i+1]i<elements[i]) { ldp[i]=ldp[i+1]+1; } else ldp[i]=1; } int ans=0; for(int i=0;ii<size;i++) { if(lis[i]>1 && ldp[i]>1) { ans=max(ans,(lis[i]+ldp[i]-1)); } } return ans; }